﻿/*
 * Copyright (c) 2000-2015 Tacke Consulting, Inc
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 
 * documentation files (the "Software"), to deal in the Software without restriction, including without limitation 
 * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, 
 * and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in all copies or substantial portions 
 * of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 
 * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
 * DEALINGS IN THE SOFTWARE.
 * 
 */
using System;

using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace OpenNETCF.Media.DirectShow
{
    [ComImport]
    [Guid("56A868B5-0AD4-11CE-B03A-0020AF0BA770")]
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]
    internal interface IBasicVideo
    {
        [return: MarshalAs(UnmanagedType.R8)]
        double get_AvgTimePerFrame();
        int get_BitRate();
        int get_BitErrorRate();

        int get_VideoWidth();
        int get_VideoHeight();
        void put_SourceLeft([In] int SourceLeft);
        int get_SourceLeft();
        void put_SourceWidth([In]int SourceWidth);
        int get_SourceWidth();
        void put_SourceTop([In]int SourceTop);
        int get_SourceTop();
        void put_SourceHeight([In]int SourceHeight);
        int get_SourceHeight();
        void put_DestinationLeft([In]int DestinationLeft);
        int get_DestinationLeft();
        void put_DestinationWidth([In]int DestinationWidth);
        int get_DestinationWidth();
        void put_DestinationTop([In]int DestinationTop);
        int get_DestinationTop();
        void put_DestinationHeight([In]int DestinationHeight);
        int get_DestinationHeight();

        void SetSourcePosition([In]int Left, [In]int Top, [In]int Width, [In]int Height);        
        void GetSourcePosition([Out]out int pLeft, [Out]out int pTop, [Out]out int pWidth, [Out]out int pHeight);        
        void SetDefaultSourcePosition();        
        void SetDestinationPosition([In] int Left, [In] int Top, [In] int Width, [In] int Height);
        void GetDestinationPosition([Out]out int pLeft, [Out]out int pTop,[Out]out int pWidth,[Out]out int pHeight);        
        void SetDefaultDestinationPosition();        
        void GetVideoSize([Out]out int pWidth, [Out]out int pHeight);        
        void GetVideoPaletteEntries([In] int StartIndex, [In] int Entries, [Out]out int pRetrieved, [Out]out int pPalette);        
        void GetCurrentImage([In, Out] int pBufferSize,[Out]out int pDIBImage);        
        void IsUsingDefaultSource();        
        void IsUsingDefaultDestination();        
    }
}
